var jweixin = require('jweixin-module')
const http = uni.$u.http

// 需要调用的微信api列表
export const WXAPI = [
	'chooseImage',
	// 'updateAppMessageShareData',
	// 'updateTimelineShareData',
	// 'onMenuShareAppMessage',
	// 'scanQRCode',
	// 'getLocation'
]

// 微信分享朋友默认配置
const shareOptionsDefalut = {
	title: '这是标题', // 分享标题
	desc: '这是描述', // 分享描述
	imgUrl: '图片地址', // 封面图
}

export default {
	/**
	 * 判断是否在微信中
	 */
	isWechat() {
		var ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			return true;
		} else {
			return false;
		}
	},

	/**
	 * 通过config接口注入权限验证配置
	 * @param {Object} cb 需要执行的函数
	 */
	getWxConfig(cb) {
		http.post('api/wx', {
			url: encodeURIComponent(window.location.href)
		}).then(res => {
			if (res.success) {
				jweixin.config({
					debug: false, // 是否开启调试模式
					appId: res.data.appId, // 必填，公众号的唯一标识
					timestamp: res.data.timestamp, // 必填，生成签名的时间戳
					nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
					signature: res.data.signature, // 必填，签名，见附录1
					jsApiList: WXAPI
				})
				if (cb) {
					cb()
				}
			}
		})
	},

	/**
	 * 唤起微信分享
	 * @param {Object} sharedata 分享需要的参数
	 * @param {Object} cb 成功回调
	 * @param {Object} errorCb 失败回调
	 */
	callWexinShare(sharedata = shareOptionsDefalut, cb = () => {}, errorCb = () => {}) {
		this.getWxConfig(() => {
			jweixin.ready(() => {
				console.log('---config注入成功---，开始使用sdk接口')
				// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容
				jweixin.updateAppMessageShareData({
					title: sharedata.title || shareOptionsDefalut.title,
					desc: sharedata.desc || shareOptionsDefalut.desc,
					// 图片格式：微信SDK支持的分享图标格式为JPEG、PNG格式，不支持GIF格式。
					// 图片大小：微信SDK对分享图标的大小有限制，图片大小不能超过32KB。
					// 图片尺寸：微信SDK对分享图标的尺寸也有限制，建议分享图标的尺寸为120px * 120px。
					// 图片质量：为了保证分享图标的清晰度，建议分享图标的质量在80%以上。
					imgUrl: (sharedata.imgUrl || shareOptionsDefalut.imgUrl) +
						'?x-oss-process=image/resize,w_120,m_lfit/format,png/quality,q_80',
					link: window.location.href,
					success: (res) => {
						cb(res)
					},
					cancel: (cancelMsg) => {
						errorCb(cancelMsg)
					}
				})
				// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
				jweixin.updateTimelineShareData({
					title: sharedata.title || shareOptionsDefalut.title,
					imgUrl: (sharedata.imgUrl || shareOptionsDefalut.imgUrl) +
						'?x-oss-process=image/resize,w_120,m_lfit/format,png/quality,q_80',
					link: window.location.href,
					success: (res) => {
						cb(res)
					},
					cancel: (cancelMsg) => {
						errorCb(cancelMsg)
					}
				})
			});
			jweixin.error((res) => {
				console.log('---注入失败，查看失败原因---', res)
			});
		})
	}
}